package com.huida.app.hutoolsusage;

import cn.hutool.core.util.DesensitizedUtil;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * @author wangzhuangzhuang
 * @DESC: 信息脱敏工具类
 * @date 2022-01-11 10:17
 */
@SpringBootTest
public class DesensitizedUtilUsageDemo {
	/*
	* 在数据处理或数据清洗中，可能涉及信息的脱敏工作
	* 支持的脱敏数据类型包括：
	* 1. 用户id
	* 2. 中文姓名
	* 3. 身份证号
	* 4. 座机号
	* 5. 手机号
	* 6. 地址
	* 7. 电子邮件
	* 8. 密码
	* 9. 中国大陆车牌，包含普通车辆、新能源车辆
	* 10. 银行卡
	* */
	// 整体来说，所谓脱敏就是隐藏掉信息中的一部分关键信息，用*代替，自定义隐藏可以使用StrUtil.hide方法完成。
	@Test
	public void test01(){
		String desensitizedCard = DesensitizedUtil.desensitized("51343620000320711X", DesensitizedUtil.DesensitizedType.ID_CARD);
		System.out.println("desensitizedCard: " + desensitizedCard); // desensitizedCard: 5***************1X
	}

	// 对于约定俗称的脱敏，可以不用指定隐藏位数，比如手机号
	@Test
	public void test02(){
		String phone = "13199999918";
		String s = DesensitizedUtil.mobilePhone(phone);
		System.out.println("s: " + s); // s: 131****9918
	}

	// 当然还有一些简单粗暴的脱敏，比如密码，只保留了位数信息：
	@Test
	public void test03(){
		String pwd = "1234567890";
		String password = DesensitizedUtil.password(pwd);
		System.out.println("pwd: " + password); // pwd: **********
	}
}